#ifndef TRANSACTION_H
#define TRANSACTION_H

#include <string>
#include <ctime>
#include <iomanip>
#include <sstream>

enum class TransactionType {
    INCOME,   // 收入
    EXPENSE   // 支出
};

class Transaction {
private:
    std::string date;        // 日期
    double amount;           // 金额
    std::string category;    // 类别
    std::string note;        // 备注
    TransactionType type;    // 交易类型

public:
    // 构造函数
    Transaction(const std::string& date, double amount, const std::string& category,
                const std::string& note, TransactionType type);

    // Getter方法
    std::string getDate() const { return date; }
    double getAmount() const { return amount; }
    std::string getCategory() const { return category; }
    std::string getNote() const { return note; }
    TransactionType getType() const { return type; }

    // 获取类型字符串
    std::string getTypeString() const;

    // 显示交易记录
    void display() const;

    // 验证日期格式 (YYYY-MM-DD)
    static bool validateDate(const std::string& date);

    // 验证金额（必须为正数）
    static bool validateAmount(double amount);
};

#endif
